//
//  YDEmotionPageCell.swift
//  YDWeibo01
//
//  Created by suibian on 16/8/18.
//  Copyright © 2016年 iitcast. All rights reserved.
//

import UIKit

class YDEmotionPageCell: UICollectionViewCell {
//    定义一个属性(一维数组 8,20都可能) 供外界调用给他数量
    var emotions:[YDEmoticonModel]?{
        didSet{
//            先全部隐藏 (cell 复用 会把20 赋值给8 显示20个) 所以要全部隐藏
            for button in buttonsArray{
                button.hidden = true
                
            
            }

//        遍历emotions (遍历button数组 在出现只有8个的时候会报错 所以要遍历上面定义的可变模型数组)
            for (i,emotionModel) in emotions!.enumerate(){
//            获取button
                let button = buttonsArray[i]
//                给button的模型赋值
                button.emoticonModel = emotionModel
//                显示一个button 就放出一个隐藏的button
                button.hidden = false
//            判断是图片表情 还是emoji表情
                if emotionModel.isEmoji{
//                emoji表情  emoji()第三方的方法 返回值为字符串 所以 要转为字符串才能用
                    let code = (emotionModel.code ?? "" as NSString).emoji()
                button.setTitle(code, forState: UIControlState.Normal )
//                    防止cell的复用 emoji图片中没有image 即为nil cell 复用
                    button.setImage(nil, forState: UIControlState.Normal)
                }else{
//                图片表情 需要设置button的image 已经抽取在extension+image中
                    let image = UIImage.getEmoticonsImage(emotionModel)

                    button.setImage(image, forState: UIControlState.Normal)
//                    cell 复用
                    button.setTitle(nil, forState: UIControlState.Normal)
                    
                }
                
            }
        }
    
    }
    
    
    var indexpath:NSIndexPath?{
        didSet{
//        设置text
//            messageLable.text = "第\(indexpath?.section ?? 0)组\n第\(indexpath?.item ?? 0)页"
        }
    
    }
//    定义一个可变的空数组 存放button
    var buttonsArray:[YDEmoticonButton] = [YDEmoticonButton]()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setUpUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
//    监听删除按钮点击事件
    func deleteButtonClick(){
        print("删除按钮点击")
//      发送通知
        NSNotificationCenter.defaultCenter().postNotificationName(WEBDELETEBUTTONACTION, object: nil)
    }
    
//    监听20个按钮图片点击事件
    func buttonClick(button:YDEmoticonButton){
        NSNotificationCenter.defaultCenter().postNotificationName(WEBBUTTONACTION, object: button.emoticonModel)
    
    }
    func setUpUI(){
//        添加删除按钮
        addSubview(deleteButton)
//        添加button 需要让messgelable显示到它上面 所以要先设置
        addChlidButon()
//        contentView.addSubview(messageLable)
////        添加约束
//        messageLable.snp_makeConstraints { (make) -> Void in
//            make.center.equalTo(contentView)
//        }
    }
//    通过layout设置20个button图片的frame
    override func layoutSubviews() {
        super.layoutSubviews()

//        计算button的宽和高
        let W = (self.frame.width - 10)/CGFloat(YDEmoticonMaxCol)
        let H = (self.frame.height - 20)/CGFloat(YDEmoticonMaxRow)
//        遍历buttonsArray enumerate正向遍历 需要用到index 和button  所以要写
        for (index,button) in buttonsArray.enumerate(){
//        设置frame
//            设置xy
            let col = CGFloat(index%YDEmoticonMaxCol)
            let row = CGFloat(index/YDEmoticonMaxCol)
            button.frame = CGRect(x: col*W + 5, y: row*H, width: W, height: H)

        }
        //        删除按钮的约束
        deleteButton.frame = CGRect(x: KSCREENW - 5 - W, y: H * 2, width: W, height: H)
        
    }
    
//    创建20个按钮 
    func addChlidButon(){
//    循环创建
        for _ in 0..<YDEmoticonMaxCount{
            let button = YDEmoticonButton()
//            添加点击事件
            button.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
            //        设置字体大小
            button.titleLabel?.font = UIFont.systemFontOfSize(30)
//            给数组添加button layout设置约束时使用
            buttonsArray.append(button)
//            添加button
            contentView.addSubview(button)
        
        }
    }
//    删除按钮
    private lazy var deleteButton:UIButton = {
        let button = UIButton()
//        添加点击事件
        button.addTarget(self, action: "deleteButtonClick", forControlEvents: UIControlEvents.TouchUpInside)
        button.setImage(UIImage(named: "compose_emotion_delete"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "compose_emotion_delete_highlighted"), forState: UIControlState.Highlighted)
        return button
    
    
    }()    
//    辅助现实的字体
    private lazy var messageLable:UILabel = UILabel(textColor: UIColor.redColor(), textSize: 35, maxWidth: KSCREENW)
}
